<?php
/**
 * Created by PhpStorm.
 * User: 王瀚
 * Date: 2016/3/10
 * Time: 23:31
 */

namespace Product\Model;
use Think\Model;

/**
 * 产品分类
 * Class ProductCatalogModel
 * @package Product\Model
 */
class ProductDefineModel extends Model
{

    protected $_validate = array(
        array('code','require','code必须填写'), //默认情况下用正则进行验证
        array('name', '1,30', '名称长度不合法', self::EXISTS_VALIDATE, 'length'),
    );

    protected $_auto = array(
        array('created_time', NOW_TIME, self::MODEL_INSERT),
        array('last_upd_time', NOW_TIME, self::MODEL_BOTH),
        array('flag_deleted', 'N', self::MODEL_INSERT),
        //array('uid', 'is_login',3, 'function'),
    );


    /**获得分类树
     * @param int  $id
     * @param bool $field
     * @return array
     * @auth 陈一枭
     */
    public function getTree($id = '100', $field = true){
        /* 获取当前分类信息 */
        if($id){
            $info = $this->info($id);
            $id   = $info['entityOid'];
        }

        /* 获取所有分类 */
        $map  = array('status' => array('gt', 0));
        $list = $this->field($field)->where($map)->order('sortNo')->select();
        $list = list_to_tree($list, $pk = 'code', $pid = 'pri_code', $child = '_', $root = $id);


        /* 获取返回数据 */
        if(isset($info)){ //指定分类则返回当前分类极其子分类
            $info['_'] = $list;
        } else { //否则返回所有分类
            $info = $list;
        }

        return $info;
    }

    /**
     * 获取分类详细信息
     * @param  milit   $id 分类ID或标识
     * @param  boolean $field 查询字段
     * @return array     分类信息
     * @author 麦当苗儿 <zuojiazi@vip.qq.com>
     */
    public function info($id, $field = true){
        /* 获取分类信息 */
        $map = array();
        if(is_numeric($id)){ //通过ID查询
            $map['entityOid'] = $id;
        } else { //通过标识查询
            $map['code'] = $id;
        }
        return $this->field($field)->where($map)->find();
    }
}